<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //1、函数创建方法一
        function add(n1,n2){
            return n1+n2;
        }
        //每一个function（函数）都是Function的实例，函数是对象，函数名是指针
        console.log(add instanceof Function);
        //函数也是对象，只要是对象就用__proto__属性，指向构造器的prototype原型
        console.log(add.__proto__);
        console.log(add.__proto__===Function.prototype);
        
        //2、函数创建的方法二，表达式
        var f1=function(){
            console.log('这是一个函数');
        }
        f1(); //函数的调用
        //将函数的引用赋值给其它变量
        var f2=f1;
        f2();
        
        //3、创建函数的方法三，实例化Function
        var f3=new Function("n1","n2","return n1-n2");
        console.log(f3(3,1));
        //任意函数的构造器都是Function
        console.log(add.constructor===Function);
        console.log(add.constructor===Function.prototype.constructor);
        console.log(f1.constructor===f2.constructor);
        console.log(f2.constructor===f3.constructor);
        console.log(add.constructor===f1.constructor);
    </script>
</body>
</html>